100 POKE53281,0 110 PRINT"[147]"CHR$(142)"":GOSUB2280 120 REM *** LOAD FONT 130 POKE52,128:POKE56,128:CLR 140 POKE147,0:SYS57812"SWAPPER.O",8,1:SYS62631 145 SYS57812"FNT1",8,0:POKE780,0:POKE781,0:POKE782,128:SYS65493 150 SYS57812"FNT2",8,0:POKE780,0:POKE781,0:POKE782,144:SYS65493 160 IFPEEK(783)AND1THENPRINT"LOAD ERROR":END 170 REM *** INIT SCREEN 175 POKE53281,15:POKE53280,15 180 POKE56578,PEEK(56578)OR3:POKE56576,(PEEK(56576)AND252)OR1:POKE648,136 185 DIMCC%(12):FORI=0TO11:READCC%(I):NEXT 187 DATA3,4,6,7,8,9,10,11,12,13,14,15 190 POKE53272,32:I=RND(0) 200 T1$="[144][147] 89<=[192][193][196][197][200][201]<=[204][205][208][209][212][213][216][217][220][221][160][161][146] BY[\_[144]" 210 T1$=T1$+" :;>?[194][195][198][199][202][203]>?[206][207][210][211][214][215][218][219][255][223][162][163][146] DAVE]^[144] " 220 T1$=T1$+" JOHANNSEN":PRINTT1$; 230 REM *** INTRODUCTION 240 PRINT" DO YOU WANT INSTRUCTIONS?" 250 GETA$:IFA$=""THEN250 260 IFA$="Y"THENGOSUB1500 270 PRINT" WHAT SIZE <2 TO 9> [157][157]" 280 GETA$:IFA$=""THEN280 290 S=ASC(A$)-ASC("0"):IFS<2ORS>9THEN270 300 PRINT" INITIALIZING... " 310 DIMS%(11,10),D%(11,10),T%(55),X%(55),Y%(55),H%(55),N%(55):Y=0 320 REM *** COMPUTE INITIAL DIRECTIONS 330 Y=Y+1:X=0:IFY>S+1THEN470 340 X=X+1:IFX>S+2THEN330 350 IFD%(X,Y)>0THEN340 360 IFX=S+2THEN410 370 IFY=S+1THEN420 380 IFD%(X,Y+1)>0THEN420 390 IFD%(X+1,Y)>0THEN410 400 IFRND(1)>.5THEN420 410 D%(X,Y)=2:D%(X,Y+1)=1:GOTO340 420 J=D%(X+1,Y):D%(X,Y)=3:D%(X+1,Y)=4:ONJ+1GOTO340,430,440,450,340 430 X=X+1:Y=Y-1:D%(X,Y)=0:GOTO350 440 D%(X+1,Y+1)=0:GOTO340 450 D%(X+2,Y)=0:GOTO340 460 REM *** GET RANDOM DOMINO ORDER 470 J=1:FORX=0TOS:FORY=0TOX:IFRND(1)>.5THEN490 480 X%(J)=X:Y%(J)=Y:GOTO500 490 X%(J)=Y:Y%(J)=X 500 J=J+1:NEXTY,X:N=J-1:N1=0:N2=0 510 FORI=1TON:J=INT(RND(1)*N+1):X=X%(I):X%(I)=X%(J):X%(J)=X:X=Y%(I):Y%(I)=Y%(J) 520 Y%(J)=X:NEXT:I=1 530 REM *** PUT DOMINOS IN GRID 540 FORX=1TOS+2:FORY=1TOS+1:OND%(X,Y)GOTO580,560,570,580 550 PRINT"PROGRAM ERROR!":GOTO580 560 S%(X,Y)=X%(I):S%(X,Y+1)=Y%(I):I=I+1:GOTO580 570 S%(X,Y)=X%(I):S%(X+1,Y)=Y%(I):I=I+1 580 D%(X,Y)=0:NEXTY,X:PRINT" " 590 REM *** PRINT GRID 600 POKE34953-S,35:POKE34958+S,36:POKE35073+79*S,37:POKE35078+81*S,38 610 FORI=1TO2*S+4:POKE34953-S+I,33:POKE35073+79*S+I,33:NEXT 620 FORI=1TO2*S+2:POKE34953-S+40*I,34:POKE34958+S+40*I,34:NEXT 630 FORY=1TOS+1:FORX=1TOS+2:I=34912-S+2*X+80*Y:J=64+12*S%(X,Y) 640 POKEI,J:POKEI+1,J+1:POKEI+40,J+2:POKEI+41,J+3:NEXTX,Y 650 REM *** ADD DOMINOS TO THE SIDE 660 FORY=0TOS:FORX=0TOY:J=Y*(Y+1)/2+X:I=INT(J/20):J=J-20*I:J=35010+40*J+2*I 670 POKEJ,236+X:POKEJ+1,246+Y:NEXTX,Y:X=1:Y=1 680 POKE35832,5:POKE53271,0:POKE53276,0:POKE53277,0:POKE53287,1:POKE53269,1 690 REM *** ADD HELP 700 PRINT"":FORI=217TO242:POKEI,PEEK(I)OR128:NEXT 710 PRINT"[144]C:COLOR" 720 PRINT"[144]H:HELP" 730 PRINT"[144]U:UNDO" 740 PRINT"[144]X:CLEAR" 743 PRINT"[144]E:ERASE" 745 PRINT"[144]F:FONT" 746 PRINT"[144]I:UP" 747 PRINT"[144]M:DOWN" 748 PRINT"[144]J:LEFT" 749 PRINT"[144]K:RIGHT" 750 PRINT"[144]Q:QUIT" 760 REM *** MAIN LOOP 770 POKE53249,66+16*Y:X1=152-8*S+16*X:POKE53248,X1AND255:POKE53264,X1/256 775 GETA$ 780 IFN1=NTHEN1920 790 J=31-(PEEK(56320)AND31) 800 IFJ=1ORA$="[145]"THENY=Y+(Y>1):GOTO770 810 IFJ=2ORA$=""THENY=Y-(Y<=S):GOTO770 820 IFJ=4ORA$="[157]"THENX=X+(X>1):GOTO770 830 IFJ=8ORA$=""THENX=X-(X<=S+1):GOTO770 840 IFJ=16ORA$="E"THENGOSUB1210:GOTO770 850 IFJ=17ORA$="I"THEND=1:GOSUB990:GOTO770 860 IFJ=18ORA$="M"THEND=2:GOSUB990:GOTO770 870 IFJ=20ORA$="J"THEND=4:GOSUB990:GOTO770 880 IFJ=24ORA$="K"THEND=3:GOSUB990:GOTO770 890 IFA$=""THEN770 900 IFA$<>"C"THEN910 905 CC=CC+1:IFCC>11THENCC=0 907 POKE53281,CC%(CC):POKE53280,CC%(CC):GOTO770 910 IFA$="Q"THEN1930 920 IFA$="H"THENGOSUB2050:GOTO770 930 IFA$="X"THENFORX=1TOS+2:FORY=1TOS+1:GOSUB1210:NEXTY,X:X=1:Y=1:GOTO770 935 IFA$="F"THENSYS828:GOTO770 940 IFA$<>"U"THEN770 950 J=0:FORI=1TON:IFN%(I)>JTHENJ=N%(I):A=I 960 NEXT:IFJ=0THEN770 970 X=X%(A):Y=Y%(A):GOSUB1210:GOTO770 980 REM *** TAKE SQUARE X,Y IN DIR. D 990 ONDGOTO1000,1010,1020,1030 1000 E=2:X1=X:Y1=Y-1:ON(Y1<1)+2GOTO1190,1040 1010 E=1:X1=X:Y1=Y+1:ON(Y1>S+1)+2GOTO1190,1040 1020 E=4:X1=X+1:Y1=Y:ON(X1>S+2)+2GOTO1190,1040 1030 E=3:X1=X-1:Y1=Y:IFX1<1THEN1190 1040 A=S%(X,Y):B=S%(X1,Y1):IFBF1THENI=F:F=F1:F1=I 1340 F2=F1*(F1+1)/2+F+1:T%(F2)=0:D%(X,Y)=0:N%(F2)=0 1350 N1=N1-1:F2=B:B=F1:F1=A:A=F:C=0:GOSUB2010:A=F1:B=F2:RETURN 1360 REM *** BLINK EXISTING DOMINO 1370 Y1=Y%(AB):X1=X%(AB):I=55392-S+2*X1+80*Y1 1380 OND%(X1,Y1)GOTO1390,1400,1410,1420 1390 J=I-80:GOTO1430 1400 J=I+80:GOTO1430 1410 J=I+2:GOTO1430 1420 J=I-1 1430 POKEI,2:POKEI+1,2:POKEI+40,2:POKEI+41,2 1440 POKEJ,2:POKEJ+1,2:POKEJ+40,2:POKEJ+41,2 1450 POKEI,0:POKEI+1,0:POKEI+40,0:POKEI+41,0 1460 POKEJ,0:POKEJ+1,0:POKEJ+40,0:POKEJ+41,0 1470 F=PEEK(56320)AND31:IFF<31THEN1430 1480 RETURN 1490 REM *** INTRO MESSAGE 1500 PRINTT1$;"" 1505 PRINT" THE RULES OF THE GAME 1510 [153]"I WILL FORM A RECTANGLE OF DOMINOS; AND" 1520 [153]"THEN I WILL REMEMBER WHERE EACH OF THE" 1530 [153]"NUMBERS IS LOCATED: I WILL THEN REMOVE" 1540 [153]"THE DOMINOS: YOUR JOB IS TO DETERMINE" 1550 [153]"HOW TO PLACE THE DOMINOS BACK TO FORM" 1560 [153]"THE RECTANGLE: ALL OF THE DOMINOES IN 1562 PRINT"THE STOCKPILE ON THE RIGHT WILL BE 1563 [153]"USED AND THE GRID WILL BE COMPLETELY 1564 PRINT"COVERED: 1565 [153]"YOUR ANSWER MAY BE DIFFERENT FROM MINE: 1580 GOSUB 1880 1590 PRINT"[145] USING THE JOYSTICK" 1600 PRINT"PUT THE SQUARE CURSOR OVER THE HALF" 1610 PRINT"OF THE DOMINO YOU WANT TO PLACE; THEN; 1620 [153]"WHILE PUSHING THE FIREBUTTON; PUSH THE 1630 PRINT"STICK IN THE DIRECTION OF THE OTHER 1640 [153]"HALF: PRESSING THE BUTTON AGAIN WILL 1650 PRINT"ERASE THE DOMINO: 1660 [153]" USING THE KEYBOARD 1662 PRINT"USE THE CRSR KEYS TO PLACE THE CURSOR 1670 [153]"AND THE I; J; K AND M KEYS TO PLACE THE 1675 PRINT"DOMINO: PRESS E TO ERASE THE DOMINO: 1680 [153]"IF THE DOMINO HAS ALREADY BEEN USED; 1690 PRINT"THE MATCHING DOMINO WILL BLINK: 1695 [141]1880 1700 [153]"ON THE STOCKPILE" 1710 [153]"TO THE RIGHT OF THE PLAYING GRID THE 1720 PRINT"UNUSED DOMINOES ARE LISTED: IF YOU 1730 [153]"PRESS H FOR HELP; THE DOMINOES THAT 1740 PRINT"CANNOT BE PLACED WILL TURN RED; AND THE 1750 [153]"DOMINOES THAT CAN ONLY BE PLACED IN ONE 1760 PRINT"POSITION WILL BE GREEN: 1770 [153]"PRESS C TO CHANGE BACKGROUND COLOR: 1780 PRINT"PRESS U TO TAKE BACK YOUR LAST MOVE: 1790 [153]"PRESS X TO CLEAR THE WHOLE GRID: 1800 PRINT"PRESS F TO SWITCH FONTS: 1805 [153]"PRESS Q TO QUIT TO LOADSTAR: 1810 GOSUB1880 1820 RETURN 1870 REM *** WAIT FOR ANY KEY 1880 PRINT" PRESS ANY KEY TO CONTINUE[144]"; 1890 GETA$:IFA$=""THEN1890 1900 PRINTT1$;"":RETURN 1910 REM *** END GAME CODE 1920 FORT=0TO1000:NEXT 1925 POKE53269,0:PRINTT1$;" Y O U W O N":GOTO1940 1930 POKE53269,0:PRINTT1$;" G A M E O V E R" 1940 PRINT" ANOTHER GAME ?" 1945 GETA$:IFA$=""THEN1945 1950 IFA$="Y"THENCLR:GOTO180 1960 POKE648,4:POKE53272,20:POKE56576,(PEEK(56576)AND252)OR3:PRINT"[147]" 1970 OPEN15,8,15,"R0:HELLO CONNECT=HELLO CONNECT":INPUT#15,ER%:CLOSE15 1980 IFER%<>63THENEND 1990 POKE646,PEEK(53281):PRINT"[147]LOAD"CHR$(34)"HELLO CONNECT"CHR$(34)",8" 1995 PRINT"RUN" 1997 POKE631,13:POKE632,13:POKE198,2:END 2000 REM *** SET HINT DOMINO AB TO COLOR C 2010 IFB0THEN2160 2080 F=S%(X,Y):IFX=S+2THEN2120 2090 IFD%(X+1,Y)>0THEN2120 2100 A=S%(X+1,Y):B=F:IFB0THEN2160 2140 A=S%(X,Y+1):B=F:IFB